package com.yylc.cscore.dao;

import com.yylc.cscore.bean.query.ServiceTaskQueryBean;
import com.yylc.cscore.entity.Category;
import com.yylc.cscore.entity.TaskEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author xiangnan
 * date 2018/5/8
 */
@Mapper
public interface TaskDao {

    TaskEntity selectById(@Param("id") int id);

    List<TaskEntity> selectByDayId(@Param("userType") String userType, @Param("dayId") String dayId,
                             @Param("allotStatus") Integer allotStatus, @Param("operateStatus") Integer operateStatus,
                             @Param("taskCode") String taskCode);

    /**
     * 根据ServiceTaskQueryBean查询
     */
    List<TaskEntity> selectByQueryBean(ServiceTaskQueryBean queryBean);

    int selectByQueryBeanCount(ServiceTaskQueryBean queryBean);

    /**
     * 根据用户ID查询其所有的任务，前提是该用户已经分配给某个客服
     */
    List<TaskEntity> selectListByUserId(@Param("userId") String userId);

    /**
     * userType参数必填，其他参数选填
     *
     * isCurrentValid: 数据生命周期状态:1 有效, 0 无效 ， 4 过期
     * allotStatus:    是否已分配状态:1 待分配, 2 已分配
     * operateStatus:  处理状态:1 未处理 2、跟进中 3、已完成 4、无需处理 5、已加微信  7 处理失败
     */
    List<TaskEntity> selectByUserType(@Param("userType") String userType,
                                      @Param("allotStatus") Integer allotStatus, @Param("operateStatus") Integer operateStatus,
                                      @Param("taskCode") String taskCode,
                                      @Param("start") Integer start, @Param("size") Integer size);

    int selectByUserTypeCount(@Param("userType") String userType,
                              @Param("allotStatus") Integer allotStatus, @Param("operateStatus") Integer operateStatus,
                              @Param("taskCode") String taskCode);

    int update(TaskEntity entity);



    // --------------------------------------------
    // 任务的业务类型操作dao接口
    // --------------------------------------------

    List<Category> selectCategoryList(@Param("parentId") String parentId);

}
